Backend: Authentication Routes
Created by: James Liu Created time: February 22, 2024 2:28 PM Tags: Authentication, Backend
Authentication API Endpoints
This API provides endpoints for managing user authentication, including registration, login, and token validation. It also supports logging in through Google OAuth.
Endpoints
POST /register
Registers a new user with a username, email, and password.
Request Body
{
"username": "newuser",
"email": "newuser@example.com",
"password": "yourpassword"
}
Responses
- 201 Created
-
Description: User registered successfully.
-
Body:
{
"success": true,
"message": "User registered successfully",
"data": {
"token": "jwt.token.here"
}
}
-
- 400 Bad Request
-
Description: Username or email already taken.
-
Body:
{
"success": false,
"message": "Email and/or username are taken"
}
-
- 500 Internal Server Error
-
Description: Error registering new user.
-
Body:
{
"success": false,
"message": "Error registering new user"
}
-
POST /login
Authenticates a user and returns a token.
Request Body
{
"email": "user@example.com",
"password": "yourpassword"
}
Responses
- 200 OK
-
Description: Logged in successfully.
-
Body:
{
"success": true,
"message": "Logged in successfully",
"data": {
"token": "jwt.token.here",
"user": {
"_id": "user_id",
"username": "username",
"email": "email@example.com",
"picture": "url/to/picture",
"admin": false,
"saved": []
}
}
}
-
- 500 Internal Server Error
-
Description: Login failed.
-
Body:
{
"success": false,
"message": "Login failed"
}
-
GET /validate-token
Validates the user's token and returns user details if valid.
Headers
- Authorization: Bearer jwt.token.here
Responses
- 200 OK
-
Description: Token is valid.
-
Body:
{
"success": true,
"message": "Token is valid",
"data": {
"user": {
"_id": "user_id",
"username": "username",
"email": "email@example.com",
"picture": "url/to/picture",
"admin": false,
"saved": []
}
}
}
-
- 404 Not Found
-
Description: User not found.
-
Body:
{
"success": false,
"message": "User not found"
}
-
- 500 Internal Server Error
-
Description: Error fetching user details.
-
Body:
{
"success": false,
"message": "Error fetching user details"
}
-
POST /google-login
Logs in a user or registers a new user through Google OAuth.
Request Body
{
"code": "authorization_code",
"isRegister": true
}
Responses
- 200 OK
-
Description: Google login successful.
-
Body:
{
"success": true,
"message": "Google login successful",
"data": {
"token": "jwt.token.here",
"user": {
"_id": "user_id",
"username": "username",
"email": "email@example.com",
"picture": "url/to/picture",
"admin": false,
"saved": []
}
}
}
-
- 400 Bad Request
-
Description: No authorization code provided.
-
Body:
{
"success": false,
"message": "No authorization code provided"
}
-
- 500 Internal Server Error
-
Description: Google login failed.
-
Body:
{
"success": false,
"message": "Google login failed"
}
-